首页 > 试题广场 >

和为K的连续子数组

[编程题]和为K的连续子数组
  • 热度指数:19104 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
给定一个无序数组 arr , 其中元素可正、可负、可0。给定一个整数 k ,求 arr 所有连续子数组中累加和为k的最长连续子数组长度。保证至少存在一个合法的连续子数组。
[1,2,3]的连续子数组有[1,2],[2,3],[1,2,3] ,但是[1,3]不是

数据范围: 1 \le n \le 10^5
要求:空间复杂度 , 时间复杂度
示例1

输入

[1,-2,1,1,1],0

输出

3
示例2

输入

[0,1,2,3],3

输出

3

备注:
function maxlenEqualK( arr ,  k ) {
    // write code here
    let count = 0
    let n = arr.length
    for(let i=0;i<n;i++) {
       let sum = 0
       let temp = 0
       for(let j=i;j<n;j++) {
           sum += arr[j]
           temp++
           if (sum === k) {
               count = Math.max(count,temp)
           }
       }
       if(count>n-i) break;
    }
    return count
}
发表于 2022-04-15 19:18:27 回复(0)

问题信息

难度:
1条回答 4282浏览

热门推荐

通过挑战的用户

查看代码